package com.lenovo.lcdm.type.vo;

import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @desc 类型定义传输类
 * @author
 * @date
 */
public class TypeDefinitionModel implements Serializable {

    private Long id;

    /**
     * 内部名称
     */
    private String internalName;

    /**
     * 显示名称
     */
    private String displayName;

    /**
     * 说明
     */
    private String description;

    /**
     * Reference class
     */
    private String referenceClass;

    /**
     * Reference table
     */
    private String referenceTable;

    /**
     * branch id, 一个version对应一个branch id
     */
    private Long branchId;

    /**
     * 标识是否是一个version的最新小版本
     */
    private Boolean latestIteration;

    /**
     * 父类型ID
     */
    private Long parentTypeId;

    /**
     * 图标路径
     */
    private String iconPath;

//    /**
//     * 子类型定义集合
//     */
//    private List<TypeDefinitionModel> subTypes;

    private List<AttributeGroupModel> attributeGroupModels;

    /**
     * 所有local属性集合
     */
    private List<LocalAttributeModel> localAttributes;

    /***
     * 所有local属性集合，以attribute group分组
     */
    private LinkedHashMap<String,List<LocalAttributeModel>> localAttributesWithGroup;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getInternalName() {
        return internalName;
    }

    public void setInternalName(String internalName) {
        this.internalName = internalName;
    }

    public String getDisplayName() {
        return displayName;
    }

    public void setDisplayName(String displayName) {
        this.displayName = displayName;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getReferenceClass() {
        return referenceClass;
    }

    public void setReferenceClass(String referenceClass) {
        this.referenceClass = referenceClass;
    }

    public String getReferenceTable() {
        return referenceTable;
    }

    public void setReferenceTable(String referenceTable) {
        this.referenceTable = referenceTable;
    }

    public Long getBranchId() {
        return branchId;
    }

    public void setBranchId(Long branchId) {
        this.branchId = branchId;
    }

    public Boolean getLatestIteration() {
        return latestIteration;
    }

    public void setLatestIteration(Boolean latestIteration) {
        this.latestIteration = latestIteration;
    }

    public Long getParentTypeId() {
        return parentTypeId;
    }

    public void setParentTypeId(Long parentTypeId) {
        this.parentTypeId = parentTypeId;
    }

    public String getIconPath() {
        return iconPath;
    }

    public void setIconPath(String iconPath) {
        this.iconPath = iconPath;
    }

//    public List<TypeDefinitionModel> getSubTypes() {
//        return subTypes;
//    }
//
//    public void setSubTypes(List<TypeDefinitionModel> subTypes) {
//        this.subTypes = subTypes;
//    }


    public List<AttributeGroupModel> getAttributeGroupModels() {
        return attributeGroupModels;
    }

    public void setAttributeGroupModels(List<AttributeGroupModel> attributeGroupModels) {
        this.attributeGroupModels = attributeGroupModels;
    }

    public List<LocalAttributeModel> getLocalAttributes() {
        return localAttributes;
    }

    public void setLocalAttributes(List<LocalAttributeModel> localAttributes) {
        this.localAttributes = localAttributes;
    }

    public Map<String, List<LocalAttributeModel>> getLocalAttributesWithGroup() {
        return localAttributesWithGroup;
    }

    public void setLocalAttributesWithGroup(LinkedHashMap<String, List<LocalAttributeModel>> localAttributesWithGroup) {
        this.localAttributesWithGroup = localAttributesWithGroup;
    }
}
